﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Mail;

namespace TerhelesEloszto.Engine
{
	public class MailEngine
	{
		/// <summary>
		/// Az email szerver host címe.
		/// </summary>
		public static string Host = "smtp.gmail.com";

		/// <summary>
		/// A host portja.
		/// </summary>
		public static int Port = 587;

		/// <summary>
		/// A küldő account neve
		/// </summary>
		public static string SenderName = "terheles.eloszto";

		/// <summary>
		/// A küldő jelszava.
		/// </summary>
		public static string SenderPass = "terhe1ese10szt0";

		/// <summary>
		/// A küldő email címe
		/// </summary>
		public static string SenderAddress = "terheles.eloszto@gmail.com";

		/// <summary>
		/// A projekt honlapja
		/// </summary>
		public static string Programhomepage = "terheleseloszto.notexists.com";

		/// <summary>
		/// Alapértelmezett üzenettípusok.
		/// </summary>
		public enum DefaultMessage { setPreferences, seeTimeTable }

		/// <summary>
		/// Üzenet küldése.
		/// </summary>
		/// <param name="to">Címzett.</param>
		/// <param name="title">Cím</param>
		/// <param name="message">Üzenet.</param>
		public static void SendMail( string to, string title, string message )
		{
			if( to != null )
			{
				SmtpClient client = new SmtpClient( Host, Port )
				{
					Credentials = new NetworkCredential( SenderName, SenderPass ),
					EnableSsl = true
				};

				client.Send( SenderAddress, to, title, message );
			}
		}

		/// <summary>
		/// Alapértelmezett üzenet küldése.
		/// </summary>
		/// <param name="to">Címzett.</param>
		/// <param name="title">Cím.</param>
		/// <param name="msg">Üzenet.</param>
		public static void SendMail( string to, string title, DefaultMessage msg )
		{
			SendMail( to, title, GetDefaultMessage( msg ) );
		}

		/// <summary>
		/// Alapértelmezett üzenettípus szöveggé konvertálása.
		/// </summary>
		/// <param name="msg">Az üzenettípus.</param>
		/// <returns>A szöveg-</returns>
		private static string GetDefaultMessage( DefaultMessage msg )
		{
			if( msg == DefaultMessage.setPreferences )
			{
				return "Tisztelt oktató!\n\nKérem jelentkezzen be a  " + Programhomepage + " oldara és állítsa be " +
					"a jelenlegi félében érvényes szakmai és személyes preferenciáit. \n\n Üdvölettel: Tanszéki Terheléselosztó Rendszer";
			}
			else if( msg == DefaultMessage.seeTimeTable )
			{
				return "Tisztelt oktató!\n\nA tanszék féléves terheléselosztása elkészült. \n\n" +
					"A " + Programhomepage + " oldalon bejelentkezés után megtekintheti az órarendjét. \n\n Üdvölettel: Tanszéki Terheléselosztó Rendszer";
			}
			else
			{
				return null;
			}
		}
	}
}
